package com.common.excel.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 监听器，用来获取excel数据
 * 将从excel的数据封装在Map里面，通过调用getDate() 方法获取读取的数据
 *
 * @author zhou_xh
 */
public class EasyExcelMapListener extends AnalysisEventListener<Map<Integer, String>> {
    private static final Logger LOGGER = LoggerFactory.getLogger(EasyExcelMapListener.class);
    /**
     * 用于存放从excel中读取到的数据
     */
    private final List<Map<Integer, String>> data = new ArrayList<>();

    public List<Map<Integer, String>> getData() {
        return data;
    }

    /**
     * 每一行数据解析完成之后,都会来到这里
     * 用于实现读取数据的保存
     * 目前将读取到表格数据存放在 this.data 中
     *
     * @param excelModel 相应的文件对应对象
     * @param context    上下文
     */
    @Override
    public void invoke(Map<Integer, String> excelModel, AnalysisContext context) {
        this.data.add(excelModel);
    }

    /**
     * 数据解析完成之后回来调用这个方法
     *
     * @param context 上下文
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        LOGGER.info("读取{}条数据，已保存在data！", this.data.size());
    }
}
